﻿/*
SINACOR - BMF&Bovespa
Arquivo: BloqueioCliente.cs
Criado em: 14-mai-2010 17:57:04
Arquiteto Responsável: p-dmartinelli
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common.Validation;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Validation.BusinessRules;
using Sinacor.Servico.Bovespa.Alocacao.BusinessEntity;


namespace Sinacor.Servico.Bovespa.Alocacao.BusinessLogic.BusinessRuleValidation
{
    public class ExisteCarteira : BaseBusinessRuleValidation<NegocioAlocadoDireto>, IBusinessRuleValidation
    {
        #region Atributos
        private int _carteiraInvalida = 520007;
        private int _erroObjetoNulo = 314816;
        #endregion
        #region Propriedades
        public int CarteiraInvalida
        {
            get { return _carteiraInvalida; }
            set { _carteiraInvalida = value; }
        }

        public int ErroObjetoNulo
        {
            get { return _erroObjetoNulo; }
            set { _erroObjetoNulo = value; }
        }
        #endregion
        #region Métodos
        public List<ValidationError> GetErrors()
        {
            return base.ErrorsList;
        }

        public void Validate()
        {
            if (base.EntityToValidate != null)
            {
                if (EntityToValidate.DadosAlocacao.Carteira.HasValue)
                {
                    var request = new Carteira.BusinessEntity.Parameter.ValidarCarteiraMercado();
                    request.CodigoMercado = (Carteira.BusinessEntity.Enum.TipoMercado)EntityToValidate.Negocio.Mercado;
                    request.CodigoBolsa = EntityToValidate.Negocio.Bolsa;
                    request.NaturezaOperacao = (Carteira.BusinessEntity.Enum.TipoNaturezaOperacao)EntityToValidate.Negocio.NaturezaOperacao;
                    request.CodigoCarteira = EntityToValidate.DadosAlocacao.Carteira.Value;

                    var bl = new Carteira.BusinessLogic.Carteira();
                    if (!bl.ValidarCarteiraMercado(request))
                        base.AddValidationError(CarteiraInvalida);
                }
                else
                {
                    // Se nao informado usar a carteira padrão
                    EntityToValidate.DadosAlocacao.Carteira = 216;
                }
            }
            else
                base.AddValidationError(ErroObjetoNulo);


        }
        #endregion
    }

}